package com.evan.idempotent.storage;

import com.evan.idempotent.enums.IdempotentStorageTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @Description: 注册枚举和对应实现
 * @Author liudeguang
 */
public class IdempotentStorageFactory {

    private final Map<IdempotentStorageTypeEnum, IdempotentStorage> map = new ConcurrentHashMap<>();

    @Autowired
    private void regist(List<IdempotentStorage> idempotentStorageList) {
        idempotentStorageList.forEach(e -> map.putIfAbsent(e.type(), e));
    }

    public IdempotentStorage get(IdempotentStorageTypeEnum idempotentStorageTypeEnum) {
        return map.get(idempotentStorageTypeEnum);
    }

}
